<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>11.4.JS对象-创建对象-利用构造函数创建对象</title>
    <script>
        // 因为字面量对象、new Object对象 一次只能创建一个对象 里面很多属性、方法都是大量相同的
        // 所以可以利用函数的方法重复这些相同的代码
        // 但是构造函数不一样，里面封装的不是普通代码，而是对象。
        // 构造函数：就是把对象里面的一些相同属性和方法抽象出来封装到函数里面

        // 创建四大天王构造函数 相同的属性：名字 年龄 性别 相同方法：唱歌
        // 1.语法：
        // function 构造函数名() {
        //     this.属性 = 值;
        //     this.方法 = function () {
        //     }
        // };
        // new 构造函数名();

        function Star(uname, age, sex) {
            this.name = uname;
            this.age = age;
            this.sex = sex;
            this.sing = function (sang) {
                console.log(sang);
            }
            // 构造函数不需要return 就可以返回结果
        }
        var ldh = new Star('刘德华', 18, '男');
        console.log(typeof ldh); //  验证代码属性
        console.log(ldh.name);
        console.log(ldh.age);
        ldh.sing('冰雨');
        var zxy = new Star('张学友', 20, '男');
        console.log(zxy.name);
        console.log(zxy.age);
        zxy.sing('李香兰');

        // 注意点：
        // (1)构造函数名字首字母必须大写
        // （2）调用函数返回的是一个对象
        // （3）调用构造函数 必须使用 new
        // （4）只要调用构造函数 就创建了一个对象 相当于 {}
        // （5）属性和方法必须添加this
    </script>
</head>

<body>

</body>

</html>